/**
 * 安卓白金英雄坛制作组 <br>
 * 文件名：TalkingScreen.java <br>
 * 创建时间：2013-8-24 上午11:31:15 <br>
 * 所属项目：GmudEX <br>
 *
 * @author 12548 <br>
 */
package lostland.gmud.exv2.ui;

import com.orhanobut.logger.Logger;

import java.util.ArrayList;

import lostland.gmud.exv2.Direction;
import lostland.gmud.exv2.Game;
import lostland.gmud.exv2.GameMessageHandler;
import lostland.gmud.exv2.Gmud;
import lostland.gmud.exv2.MainCharTile;
import lostland.gmud.exv2.MapScreen;
import lostland.gmud.exv2.MapTile;
import lostland.gmud.exv2.battle.BattleScreen;
import lostland.gmud.exv2.battle.DummyWindow;
import lostland.gmud.exv2.blgframework.CScreen;
import lostland.gmud.exv2.blgframework.Sound;
import lostland.gmud.exv2.community.CommunityLoginMenu;
import lostland.gmud.exv2.community.GmudUser;
import lostland.gmud.exv2.data.IngameData;
import lostland.gmud.exv2.data.Item;
import lostland.gmud.exv2.data.Room;
import lostland.gmud.exv2.ui.core.DialogScreen;
import lostland.gmud.exv2.ui.core.YesNoScreen;

/**
 * 类名：TalkingScreen <br>
 * 说明：对话屏
 *
 * @author 12548
 */
public class TalkingScreen extends DialogScreen {

	public static CScreen ts;

	int npcid = -1;
	TalkingWindow window;

	public static float jl_multiplier = 1f;

	public static final String spp[] = {"杀人", "放火", "挑水", "劈柴", "扫地"};
	boolean alldead;
	boolean breek = false; // 截断标记

	void default_case(int npcid) {
		final int sayingid = (int) (Math.random() * Gmud.getNpc(npcid).saying.size());
		String t = Gmud.getNpc(npcid).saying.get(sayingid);
		t = t.replace("$n", Gmud.getNpc(npcid).name);

		Sound voice = Gmud.getNpc(npcid).voices.get(sayingid);

		if (voice != null) {
			voice.play(1);
			Logger.i("playing voice");
		}

		window = new TalkingWindow(t);
	}

	public TalkingScreen(int npcid) {
		super();
		breek = false;
// ts = Gmud.ms;
		__border = new DummyWindow();
		this.npcid = npcid;
		Logger.i("npc:" + npcid);

		if (IngameData.getInstance().m1npc == npcid) {
			window = new TalkingWindow("我知道了，多谢来访！");
			IngameData.getInstance().m1npc = -1;
			IngameData.getInstance().m1 = true;
		}
		else {
			switch (npcid) {

				case 3:// 采花大盗
					if (Gmud.mc.sex > 0) {
						if (Gmud.mc.age > 15 && Gmud.mc.age < 26 && Gmud.mc.getface() > 23) {
							window = new TalkingWindow("哎哟，好标致的小妞，让大爷乐呵乐呵呗~");
						} else {
							window = new TalkingWindow("看着我干嘛，老子对你这种货色没兴趣！");
						}
					} else {
						default_case(npcid);
					}
					break;
				case 5:// 村长
					if (getGame().data.mdone) {
						window = new TalkingWindow("看你红光满面，还是先去找顾炎武领赏吧！");
					} else if (IngameData.getInstance().m1) {
						window = new TalkingWindow("你完成了任务，去找顾炎武领赏吧！");

						if ((getGame().data.yellowcal & 1) != 0) {
							jl_multiplier = 1.2f;
						}
						IngameData.getInstance().m1 = false;
						IngameData.getInstance().m1npc = -1;
						getGame().data.mdone = true;
					} else if (IngameData.getInstance().m1npc == -1) {
						alldead = true;
						boolean adead = true;
						for (int i = 0; i < 123; i++)
							if (!getGame().data.death_note.contains(i) && i != 5 && i != 9 && i != 24
									&& i != 25 && i != 30) {
								alldead = false;
							}
						for (int i = 0; i < 37; i++)
							if (!getGame().data.death_note.contains(i) && i != 5 && i != 9 && i != 24
									&& i != 25 && i != 30) {
								adead = false;
							}

						int lim = (Gmud.mc.exp < 15000 && !adead) ? 37 : 123;

						if (alldead) {
							window = new TalkingWindow("什么？你把人都杀光了？I服了U！");
							return;
						} else {
							do {
								IngameData.getInstance().m1npc = (int) (Math.random() * lim);
							} while (IngameData.getInstance().m1npc == 2 ||
									IngameData.getInstance().m1npc == 5 ||
									IngameData.getInstance().m1npc == 9 ||
									IngameData.getInstance().m1npc == 25 ||
									IngameData.getInstance().m1npc == 30 ||
									IngameData.getInstance().m1npc == 24 ||
									getGame().data.death_note.contains(IngameData.getInstance().m1npc));
						}
						window = new TalkingWindow("请速去拜见" + Gmud.getNpc(IngameData.getInstance().m1npc).name + "!");
					} else {
						window = new TalkingWindow("老夫不是说过请去拜见" + Gmud.getNpc(IngameData.getInstance().m1npc).name + "的吗!");
					}
					break;
//				case 7: // 独角大道
//					if (Gmud.mc.fame == 128) {
//						default_case(npcid);
//					} else if (Gmud.mc.fame > 128) {
//						window = new TalkingWindow("哼！老夫今日落入你手，要杀要剐悉听尊便！");
//					} else if (getGame().hunting) {
//						window = new TalkingWindow("大哥啊，" + Gmud.getNpc(getGame().niceguy).name
//								+ "还没死呢，求您一定要帮我！");
//					} else if (getGame().nextNiceguy > 0) {
//						window = new TalkingWindow("大恩不言谢！这样一来在明天之前小弟就可以放松了！小弟以后就靠大哥罩着了！");
//					} else {
//						boolean ok = true;
//
//						if (Gmud.rand.nextBoolean()) {
//							getGame().niceguy = 186;
//						} else {
//							getGame().niceguy = 187;
//						}
//
//
//						do {
//							getGame().badman_map = (int) (Math.random() * (Gmud.maps.length - 1) + 1);
//						} while (Gmud.maps[getGame().badman_map].extraInfo.BadmanDisabled);
//
//						do {
//							Logger.e("1");
//							ok = true;
//							ex = (int) (Math.random() * (Gmud.maps[getGame().badman_map].width - 2) + 1);
//							ey = (int) (Math.random() * (Gmud.maps[getGame().badman_map].height - 2) + 1);
//							for (int i = ex - 1; i <= ex + 1; i++) {
//								for (int j = ey - 1; j <= ey + 1; j++) {
//									if (Gmud.maps[getGame().badman_map].getEvent(i, j) > 0
//											&& Gmud.maps[getGame().badman_map].getWalkable(i, j) != GmudMap.MP_WALKABLE) {
//										ok = false;
//									}
//								}
//							}
//
//							if (!Gmud.maps[getGame().badman_map].isWalkable(ex - 1, ey) &&
//									!Gmud.maps[getGame().badman_map].isWalkable(ex + 1, ey) &&
//									!Gmud.maps[getGame().badman_map].isWalkable(ex, ey - 1) &&
//									!Gmud.maps[getGame().badman_map].isWalkable(ex, ey + 1)) {
//								ok = false;
//							}
//
//							if (Gmud.maps[getGame().badman_map].getEvent(ex, ey) > 0
//									|| Gmud.maps[getGame().badman_map].getWalkable(ex, ey) == GmudMap.MP_UNWALKABLE) {
//								ok = false;
//							}
//						} while (!ok);
//
//						Logger.e("2");
//
//						String s1[] = new String[]{"万俟", "上官", "东方", "尉迟", "公冶", "濮阳", "淳于", "钟离"};
//						String s2[][] = new String[][]{{"德", "财", "坚", "备", "轼", "钧"},
//								{"奈", "樱", "绪", "花", "春", "秋"}};
//						Gmud.getNpc(getGame().niceguy).name = s1[(int) (Math.random() * s1.length)]
//								+
//								s2[Gmud.getNpc(getGame().niceguy).sex][(int) (Math.random() * s2[Gmud.getNpc()
//										.get(getGame().niceguy).sex].length)];
//						Gmud.getNpc(getGame().niceguy).fame = 1;
//						Logger.e("3");
//
//						Gmud.maps[getGame().badman_map].setEvent(ex, ey, getGame().niceguy);
//						Gmud.maps[getGame().badman_map].setWalkable(ex, ey, GmudMap.MP_NPC);
//						Logger.e("4");
//						Gmud.getNpc(getGame().niceguy).faction = (int) (Math.random() * 6 + 1);
//						Gmud.getNpc(getGame().niceguy).age = Gmud.mc.age + (int) (Math.random() * 6);
//						int wp[][] = {{}, {23, 43}, {16, 59}, {27, 54}, {30, 58}, {32, 63},
//								{38, 65}};
//
//						for (int i = 0; i < wp[Gmud.getNpc(getGame().niceguy).faction].length; i++) {
//							Gmud.getNpc(getGame().niceguy).carryandequip(
//									wp[Gmud.getNpc(getGame().niceguy).faction][i]);
//						}
//
//
//						// Gmud.getNpc(getGame().niceguy).items = wp[Gmud.getNpc(getGame().niceguy).faction];
//						// Gmud.getNpc(getGame().niceguy).itemsckd = wp[Gmud.getNpc(getGame().niceguy).faction];
//						// if(Math.random() * 4 < 1)
//						// Gmud.getNpc(getGame().niceguy).items = Gmud.push_back(Gmud.getNpc(getGame().niceguy).items, 86);
//
//						window = new TalkingWindow("大哥！小弟正在被[" + Gmud.getNpc(getGame().niceguy).name +
//								"]追杀！如果不去" + Gmud.maps[getGame().badman_map].getName() + "杀了TA，TA就要杀了我啊！");
//						getGame().hunting = true;
//					}
//					break;
				case 9: // 中年妇人
					if (getGame().data.mdone) {
						window = new TalkingWindow("看你红光满面，还是先去找顾炎武领赏吧！");
					} else if (!IngameData.getInstance().m2) {
//						int item_count = Gmud.mc.exp > 14500 ? 76 : 33;
						do {
							IngameData.getInstance().m2itm = Gmud.rand.nextInt(Gmud.getWp().size());
						}while( Gmud.mc.exp <Gmud.getWp().get(IngameData.getInstance().m2itm).findTaskExp);
						IngameData.getInstance().m2 = true;
						window = new TalkingWindow("今天妾身正准备请人去找" + Gmud.getWp().get(IngameData.getInstance().m2itm).getName()
								+ ",能否帮个忙？");
					} else if (Gmud.mc.have(IngameData.getInstance().m2itm) && Gmud.mc.notOnly(IngameData.getInstance().m2itm)) {
						Gmud.mc.drop(IngameData.getInstance().m2itm, 1);
						if ((getGame().data.yellowcal & 1) != 0) {
							jl_multiplier = 1.2f;
						}
						window = new TalkingWindow("你完成了任务，去找顾炎武领赏吧！");
						IngameData.getInstance().m2 = false;
						getGame().data.mdone = true;
					} else {
						window = new TalkingWindow("妾身还盼着您的" + Gmud.getWp().get(IngameData.getInstance().m2itm).getName() + "呢!");
					}
					break;
				case 24:// 老婆婆
					if (Gmud.mc.exp >= 5000) {
						window = new TalkingWindow("唉！你也算小有名气了，老身使唤不动你了！");
					} else if (Game.getInstance().data.mpp == 0) {
						Game.getInstance().data.mpp = (int) (2 + Math.random() * 3);
						Gmud.mc.carryandequip(Room.SHUI_TONG - 2 + Game.getInstance().data.mpp);
						window = new TalkingWindow("老身年事已高，有好心人帮老身"
								+ spp[Game.getInstance().data.mpp] + "吗？");
					} else {
						window = new TalkingWindow("老身吩咐你的事做完了吗？");
					}
					break;
				case 25:// 平一指
					if (Gmud.mc.fame == 128) {
						default_case(npcid);
					} else if (Gmud.mc.fame > 128) {
						window = new TalkingWindow("最讨厌伪君子了，马上从我眼前消失！");
					} else if (getGame().data.mdone) {
						window = new TalkingWindow("看你红光满面，还是先去找顾炎武领赏吧！");
					} else if (IngameData.getInstance().m3 && IngameData.getInstance().m3npc > -1) {
						if (getGame().data.death_note.contains(IngameData.getInstance().m3npc)) {
							if ((getGame().data.yellowcal & 4) != 0) {
								jl_multiplier = 1.2f;
							}
							window = new TalkingWindow("你完成了任务，去找顾炎武领赏吧！");
							getGame().data.stat_asss++;
							IngameData.getInstance().m3 = false;
							getGame().data.mdone = true;
						} else {
							window = new TalkingWindow("老夫不是让你解决" + Gmud.getNpc(IngameData.getInstance().m3npc).name + "吗？");
						}
					} else {
						alldead = true;
						for (int i = 0; i < 123; i++) {
							Logger.w("testing:" + i);
							if (!getGame().data.death_note.contains(i) && i != 2 && i != 5 && i != 9
									&& i != 24 && i != 25 && i != 30) {
								alldead = false;
							}

						}
						if (alldead) {
							window = new TalkingWindow("什么？你把人都杀光了？I服了U！");
						} else {
							Logger.w("not all dead");
							do {
								Logger.w("Finding victim");
								IngameData.getInstance().m3npc = (int) (Math.random() * 123);
							} while (IngameData.getInstance().m3npc == 5 ||
									IngameData.getInstance().m3npc == 9 ||
									IngameData.getInstance().m3npc == 25 ||
									IngameData.getInstance().m3npc == 30
									||
									IngameData.getInstance().m3npc == 24 ||
									getGame().data.death_note.contains(IngameData.getInstance().m3npc));
							// || GmudWorld.npc.get(m3npc).weak > 0);
							Logger.w("Victim found:" + IngameData.getInstance().m3npc);
							window = new TalkingWindow("老夫夜观天象，" + Gmud.getNpc(IngameData.getInstance().m3npc).name
									+ "阳寿已尽，你快去解决ta！");
							IngameData.getInstance().m3 = true;
						}
					}
					break;
				case 30:// 顾炎武
					if (getGame().data.mdone) {
						final double exprate = 0.6;
						final int EXTRA_BOUNS_RATE = 340;
						boolean jl = Math.random() < exprate;
						// int famevalue = Math.min(Math.abs(Gmud.mc.fame-128)+1, 50) + (Gmud.mc.age - 14);
						int famevalue = (int) Math.log10(Math.abs(Gmud.mc.fame - 128) * 3 + 10);
						if (jl) {
							if (Math.random() * (Gmud.mc.getface() + EXTRA_BOUNS_RATE + 1) > EXTRA_BOUNS_RATE) {
								int exp = (int) (Math.random() * 2000 * famevalue + 500);
								exp *= jl_multiplier;
								window = new TalkingWindow("顾炎武对你非常满意，你被奖励了：" + exp + "经验");
								Gmud.mc.setExp(Gmud.mc.exp + exp);
							} else {
								int exp = (int) (Math.random() * 200 * famevalue + 50);
								exp *= jl_multiplier;
								window = new TalkingWindow("你被奖励了：" + exp + "经验");
								Gmud.mc.setExp(Gmud.mc.exp + exp);
							}
						} else {
							if (Math.random() * (Gmud.mc.getface() + EXTRA_BOUNS_RATE + 1) > EXTRA_BOUNS_RATE) {
								int pot = (int) (Math.random() * 1000 * famevalue + 200);
								pot *= jl_multiplier;
								window = new TalkingWindow("顾炎武对你非常满意，你被奖励了：" + pot + "潜能");
								Gmud.mc.setPotential(Gmud.mc.potential + pot);
							} else {
								int pot = (int) (Math.random() * 100 * famevalue + 20);

								pot *= jl_multiplier;
								window = new TalkingWindow("你被奖励了：" + pot + "潜能");
								Gmud.mc.setPotential(Gmud.mc.potential + pot);
							}
						}
						getGame().data.mdone = false;
						jl_multiplier = 1f;
					} else {
						default_case(npcid);
					}

					break;

				case 13: // 石料管事

					if (Gmud.mc.getAttr(Room.ATTR_EXP) > 20000) {
						window = new TalkingWindow("像您这样身份高贵的人不适合做这种苦工！");
					} else if (Gmud.mc.have(77)) {
						window = new TalkingWindow("怎么还没有把石料送过去？偷懒可不成！");
					} else if (Gmud.mc.getAttr(Room.ATTR_EXP) < 1000) {
						window = new TalkingWindow("你的经验还不够，我不放心把石料交给你。");
					} else if (getGame().data.stoneTime < 180) {
						window = new TalkingWindow("工地现在不需要石料。");
					} else if (Gmud.mc.inventory.size() >= Gmud.mc.getInventorySize()) {
						window = new TalkingWindow("你身上的东西太多了，你还背得动石料么？");
					} else {
						window = new TalkingWindow("把这些石料送到工地去，少不了你的好处！");
						getGame().data.stoneTime = 0;
						Gmud.mc.force_give(77);
						getGame().data.task_stone = true;
					}
					break;

				case 14: // 工地管事

					if (Gmud.mc.getAttr(Room.ATTR_EXP) > 20000) {
						window = new TalkingWindow("像您这样身份高贵的人不适合做这种苦工！");
					} else if (Gmud.mc.have(77)) {
						window = new TalkingWindow("大老远跑来，辛苦你了！");
						int a = Gmud.mc.getAttr(Room.ATTR_EXP) / 100 + 30;
						int b = a / 2;

						Gmud.mc.setExp(Gmud.mc.exp + a);
						Gmud.mc.setPotential(Gmud.mc.potential + b);
						Gmud.mc.drop(77, 1);
						getGame().data.task_stone = false;
						ts = new TalkingScreen("你被奖励了：" + a + "实战经验，" + b + "潜能");
					} else if (getGame().data.task_stone) {
						window = new TalkingWindow("你真粗心，一定是半路上把石料丢了。");
						getGame().data.task_stone = false;
					} else {
						window = new TalkingWindow("你是干什么的？别在工地乱跑！");
					}

					break;

				case 110:// 白瑞德
// if(Gmud.mc.faction == 6 && Gmud.mc.have(Room.super_toys[2]))
// // 十玩具2：轩辕剑
// window = new TalkingWindow("乖徒儿，你竟然得到了这把宝剑！我才不会告诉你用这把剑可以使出雪花第六出的~", false);
// else
					default_case(npcid);
					break;

				default:
					default_case(npcid);
			}
		}

		// BasicScreen.recheck();
		Logger.i("npc:" + npcid);
	}

	public TalkingScreen(String s) {
		super();
		__border = new DummyWindow();
		npcid = -1;
		window = new TalkingWindow(s);
	}

	public TalkingScreen(ArrayList<String> ss) {
		super();
		__border = new DummyWindow();
		npcid = -1;
		window = new TalkingWindow(ss.get((int) (Math.random() * ss.size())));
	}

	/*
	 * （非 Javadoc）
	 * @see lostland.gmud.exv2.ui.DialogScreen#onTouchDown(int, int)
	 */
	@Override
	protected void onTouchDown(int tx, int ty) {
		// 什么也不做

	}

	/*
	 * （非 Javadoc）
	 * @see lostland.gmud.exv2.ui.DialogScreen#onTouchMove(int, int)
	 */
	@Override
	protected void onTouchMove(int tx, int ty) {
		// 什么也不做

	}

	/*
	 * （非 Javadoc）
	 * @see lostland.gmud.exv2.ui.DialogScreen#onTouchUp(int, int)
	 */
	@Override
	protected void onTouchUp(int tx, int ty) {
		// 什么也不做

	}

	/*
	 * （非 Javadoc）
	 * @see lostland.gmud.exv2.ui.DialogScreen#onClick(int, int)
	 */
	@Override
	protected void onClick(int tx, int ty) {
		if (window.page < window.getPages() - 1) {
			window.page++;
		} else {
			if (breek) {
				ts = null;
				getGame().popToRootScreen();
				return;
			}
			if (npcid == 16 && Gmud.mc.get_pile(Gmud.mc.findItem(Item.TRIANGLE_INDEX)) == 6
					&& getGame().data.task_smr_not_done) {
				new YesNoScreen("真的吗？你有六块三角石板？能给我看看吗？") {

					@Override
					protected void onYes() {
						Gmud.mc.force_give(80);
						getGame().data.task_smr_not_done = false;
						new TalkingScreen(
								"原来这就是石板啊，涨见识了。这个送你以表感谢吧。").replaceCurrent();
					}

					@Override
					protected void onNo() {
						getGame().popToRootScreen();
					}
				}.replaceCurrent();

			} else if (npcid == 85 &&
					getGame().data.task_lry_not_done &&
					Gmud.mc.have(15) && (Gmud.mc.notOnly(15)) &&
					Gmud.mc.have(24) && (Gmud.mc.notOnly(24)) &&
					Gmud.mc.have(31) && (Gmud.mc.notOnly(31))) {
				new YesNoScreen("大侠你身上的那三把刀好珍贵的样子，我能用这把刀再加些钱跟你换吗？") {

					@Override
					protected void onYes() {
						Gmud.mc.drop(15, 1);
						Gmud.mc.drop(24, 1);
						Gmud.mc.drop(31, 1);
						Gmud.mc.force_give(79);
						Gmud.mc.earnMoney(20000);
						getGame().data.task_lry_not_done = false;
						new TalkingScreen(
								"太好了！有了这三把刀，我应该可以见到花讽院主了！").replaceCurrent();
					}

					@Override
					protected void onNo() {
						getGame().popToRootScreen();

					}
				}.pushToGame();
			}
			// else if(npcid == 64 &&
			// Gmud.mc.have(41) && (!Gmud.mc.only(41)) &&
			// Gmud.mc.have(46) &&(!Gmud.mc.only(46)) &&
			// Gmud.mc.have(48) && (!Gmud.mc.only(48))){
			// boolean tea = Gmud.mc.have(49) && (!Gmud.mc.only(49)) ? true : false;
			// if(!tea)
			// getGame().setScreen(new TalkingScreen(game, "还缺一朵哦~ 敷衍了事可不行喵~ " + Gmud.mc.name + "酱~", false));
			// else{
			// getGame().setScreen(new YesNoScreen(game, "哇!你这几朵花好漂亮!送我吧?") {
			// @Override
			// protected void onYes() {
			// Gmud.mc.drop(41, 1);
			// Gmud.mc.drop(46, 1);
			// Gmud.mc.drop(48, 1);
			// Gmud.mc.drop(49, 1);
			//
			// ArrayList<String> ts = new ArrayList<String>();
			// ts.add("看你这么会哄女孩子开心，我就告诉你一个关于武林大会的秘密吧~");
			// // ts.add(GmudWorld.mc.name+"：啊？我来了这么久，还有我不知道的秘密？");
			// ts.add("你一定是看PC版攻略才找到我的吧，可惜这里的我没有易安手札哦~");
			// ts.add("安卓版参加大会很简单，从你16岁开始，每四年都可以参加一次。");
			// ts.add("但是如果参赛选手意外身故，因为无法凑够人数，该届大会或停办。这时候去也是白去的。");
			// ts.add("地点就在游戏厅哦，带够钱，祝你好运~ 么么哒~ ");
			//
			// getGame().setScreen(new EventScreen(game,ts,false));
			// }
			//
			// @Override
			// protected void onNo() {
			// getGame().popToRootScreen();
			// }});
			// }
			// }
//			else if (npcid == 2 && Gmud.mc.fame < 128) {
//				// 自投罗网
//			BattleScreen.battle(npcid);
//		}
		else if (npcid == 3 && Gmud.mc.sex > 0 && Gmud.mc.age > 15 && Gmud.mc.age < 26
					&& Gmud.mc.getface() > 23) {
				// 采花大盗
				BattleScreen.battle(npcid);
			} else if (npcid == 25 && Gmud.mc.fame > 128) {
				// 被平一指赶出店门
				MapScreen.getInstance().jumpTo(4, 7, 8, Direction.DOWN);
				new TalkingScreen(Gmud.mc.name + "：什么情况，我勒个去！"
				).replaceCurrent();
			} else if (npcid == 181) {
				if (GmudUser.getInstance() == null) {
					new CommunityLoginMenu("要使用云存档功能，你必须先登录社区。").replaceCurrent();
				} else {
					new YesNoScreen("确定要上传云存档吗？将覆盖你之前的云存档。") {

						@Override
						protected void onYes() {
							getGame().getHandler().obtainMessage(GameMessageHandler.MSG_CLOUDSAVE).sendToTarget();
						}

						@Override
						protected void onNo() {
							getGame().popToRootScreen();
						}
					}.replaceCurrent();
				}
			} else if (npcid == 182) {
				if (GmudUser.getInstance() == null) {
					new CommunityLoginMenu("要使用云存档功能，你必须先登录社区。").replaceCurrent();
				} else {
					new YesNoScreen("确定要下载云存档吗？将覆盖你之前的本地存档。") {

						@Override
						protected void onYes() {
							getGame().getHandler().obtainMessage(GameMessageHandler.MSG_CLOUDLOAD).sendToTarget();
						}

						@Override
						protected void onNo() {
							getGame().popToRootScreen();
						}
					}.replaceCurrent();
				}
			} else if (npcid == 183) {
				if (Gmud.mc.age < 20 || Gmud.mc.sex > 1 || Gmud.mc.faction == 8) {
					getGame().popScreen();
					return;
				} else if (GmudUser.getInstance() == null) {
					new CommunityLoginMenu("要使用结婚功能，你必须先登录社区。").replaceCurrent();
				} else {
					new YesNoScreen("结婚后你的生命上限将永久下降20%。确定要结婚吗？") {

						@Override
						protected void onYes() {
							getGame().getHandler().obtainMessage(GameMessageHandler.MSG_MARRY).sendToTarget();
							getGame().popScreen();
						}

						@Override
						protected void onNo() {
							getGame().popScreen();
						}
					}.replaceCurrent();

				}
			} else {
				switch (npcid) {
					case 1: // 小顽童
						new ExchangeScreen("太棒了,你用糖葫芦跟我换了吧! ", "你给我的糖葫芦真好吃. ",
								6, 2, 40).replaceCurrent();
						break;
					case 4:// 厨师
						new ExchangeScreen("我用这把祖传的宝刀换你身上的猪肉,你换吗? ", "真是谢谢你啊,我的祖传宝刀还好用吗? ",
								5, 1, 12).replaceCurrent();
						break;
					case 12:// 西门广
						new ExchangeScreen("太好了,我可以吃你的豆腐吗? ", "嘻嘻,穿上很漂亮吧. ",
								7, 18, 54).replaceCurrent();
						break;
					case 19:// 荷西
						new ExchangeScreen("这位客官身上的鱼可以送给小人吗? ", "我前天钓鱼钓上来一把破剑,留著也是无用,就送给客官了! ",
								74, 12, 33).replaceCurrent();
						break;
					case 29:// 老裁缝
						new ExchangeScreen("你身上的老花镜反正也用不到,送给他吗? ", "太感谢了,看你也是穷小子,这件精制布衣就送给你了! ",
								40, 1, 43).replaceCurrent();
						break;
					case 36:// 盐商
						new ExchangeScreen("老夫一生致力于炼丹,你身上的仙丹可否让我研究研究! ",
								"大恩不言谢,这件“金环锁子甲”乃赵云遗物,老夫就送给你了! ",
								10, 1, 62).replaceCurrent();
						break;
					case 46:// 平阿四
						new ExchangeScreen("你身上这两页纸好眼熟,能给我看看吗? ", "你看,加上这两页,就是一本书了! ",
								69, 1, 68).replaceCurrent();
						break;
					case 63:// 侍书
						new ExchangeScreen("你有笔,太好了,借我用一下吧! ", "我现在还记得清清楚楚,现在就默写下来给你 ",
								72, 1, 71).replaceCurrent();
						break;
					case 67:// 小红
						new ExchangeScreen("你身上的白玉箫是我家公子以前身上之物,可否送给我以作纪念 ",
								"门主送给我一把“红拂尘”,我无意学武,就送给你了! ",
								29, 1, 28).replaceCurrent();
						break;
					case 89:// 食野太郎
						new ExchangeScreen("包子!我最爱吃的包子!不管那么多了,你给我包子,我就用这本书跟你换了! ",
								"你的包子真好吃,呵呵! ",
								2, 10, 70).replaceCurrent();
						break;
					default:
						if (ts == null) {
							getGame().popScreen();
						} else if (ts == MapScreen.getInstance()) {
							getGame().popToRootScreen();
							ts = null;
						} else {
							ts.replaceCurrent();
							ts = null;
						}
				}
			}
		}

	}

	/*
	 * （非 Javadoc）
	 * @see lostland.gmud.exv2.ui.DialogScreen#onCancel()
	 */
	@Override
	public void onCancel() {
		// 什么也不做
	}

	/*
	 * （非 Javadoc）
	 * @see lostland.gmud.exv2.blgframework.CScreen#present(float)
	 */
	@Override
	public void present(float deltaTime) {
		MapScreen.getInstance().getMap().draw(MapTile.getInstance(), MapScreen.X, MapScreen.Y);
		MainCharTile.getInstance().drawInMap(MainCharTile.getInstance().currentDirection,
				MainCharTile.getInstance().currentStep, MainCharTile.getInstance().X,
				MainCharTile.getInstance().Y);
		window.draw();
	}

	/*
	 * （非 Javadoc）
	 * @see lostland.gmud.exv2.blgframework.CScreen#pause()
	 */
	@Override
	public void pause() {

	}

	/*
	 * （非 Javadoc）
	 * @see lostland.gmud.exv2.blgframework.CScreen#resume()
	 */
	@Override
	public void resume() {
	}

	/*
	 * （非 Javadoc）
	 * @see lostland.gmud.exv2.blgframework.CScreen#dispose()
	 */
	@Override
	public void dispose() {
	}

	/*
	 * （非 Javadoc）
	 * @see lostland.gmud.exv2.ui.core.DialogScreen#isStable()
	 */
	@Override
	public boolean isStable() {
		return false;

	}

}
